//package com.bsj.sipgateway.util;
//
//import com.baomidou.mybatisplus.annotation.DbType;
//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
//import com.baomidou.mybatisplus.core.toolkit.StringPool;
//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
//import com.baomidou.mybatisplus.generator.AutoGenerator;
//import com.baomidou.mybatisplus.generator.InjectionConfig;
//import com.baomidou.mybatisplus.generator.config.*;
//import com.baomidou.mybatisplus.generator.config.po.TableInfo;
//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
//import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Scanner;
//
///**
// * @author bsj-chenjunkang
// * @date 2022/8/31
// * mybatis代码生成器
// */
//public class MybatisPlusGeneratorUtil {
//
//
//    public static void main(String[] args) {
//
//        //生成代码路径
//        String projectPath="E:\\devinphw\\sipgateway\\src\\main";
//        String basePackage="com.bsj.sipgateway.mysql.report";
//
//
//        String jdbcUrl="jdbc:mysql://120.78.96.53:3306/report?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
//        String jdbcUser="cvideo";
//        String jdbcPwd="!@#bsj2017";
//        String driverClass="com.mysql.cj.jdbc.Driver";
//
//        generator(projectPath, basePackage, jdbcUser, jdbcPwd, jdbcUrl, driverClass);
//    }
//
//    /**
//     * <p>
//     * 读取控制台内容
//     * </p>
//     */
//    static String Scanner(String tip) {
//        Scanner scanner = new Scanner(System.in);
//        StringBuilder help = new StringBuilder();
//        help.append("请输入" + tip + "：");
//        System.out.println(help.toString());
//        if (scanner.hasNext()) {
//            String ipt = scanner.next();
//            if (StringUtils.isNotBlank(ipt)) {
//                return ipt;
//            }
//        }
//        throw new MybatisPlusException("请输入正确的" + tip + "！");
//    }
//
//    static void generator(String projectPath, String basePackage, String username, String password, String url, String driverClass) {
//        //代码生成器
//        AutoGenerator autoGenerator = new AutoGenerator();
//
//
//        //D:\ysy\projects\3Gvideo\xxl-job-executors\common-executor
//        //全局配置
//        GlobalConfig globalConfig = new GlobalConfig();
////        final  String projectPath = System.getProperty("user.dir");
//
//
//        globalConfig.setOutputDir(projectPath + "\\java");
//        globalConfig.setAuthor("wph");
////        globalConfig.setOpen(false);
//        //是否覆盖文件
//        globalConfig.setFileOverride(true);
//        //不需要ActiveRecord特性的请改为false
//        globalConfig.setActiveRecord(false);
//        //XML 二级缓存
//        globalConfig.setEnableCache(false);
//        //XML ResultMap
//        globalConfig.setBaseResultMap(true);
//        //XML columList
//        globalConfig.setBaseColumnList(false);
//        autoGenerator.setGlobalConfig(globalConfig);
//
//        //数据源配置
//        DataSourceConfig dataSourceConfig = new DataSourceConfig();
//        dataSourceConfig.setDbType(DbType.MYSQL);
//        //类型转换
////        dataSourceConfig.setTypeConvert(new OracleTypeConvert(){
////            @Override
////            public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
////                return super.processTypeConvert(globalConfig, fieldType);
////            }
////        });
//        dataSourceConfig.setUrl(url);
//        dataSourceConfig.setDriverName(driverClass);
//        dataSourceConfig.setUsername(username);
//        dataSourceConfig.setPassword(password);
////        dataSourceConfig.setUrl("jdbc:clickhouse://120.78.203.76:8123/demo");
////        dataSourceConfig.setUsername("default");
////        dataSourceConfig.setPassword("bsj123!@#");
////        dataSourceConfig.setDriverName("ru.yandex.clickhouse.ClickHouseDriver");
//        autoGenerator.setDataSource(dataSourceConfig);
//
//
//        //包配置
//        final PackageConfig packageConfig = new PackageConfig();
//        //基础包名
//        packageConfig.setParent(basePackage);
//        //模块名
//        packageConfig.setModuleName(Scanner("模块名"));
//        packageConfig.setService("service");
//        packageConfig.setServiceImpl("service.impl");
//        packageConfig.setEntity("entity");
////        packageConfig.setController("controller");
//        packageConfig.setMapper("mapper");
//        packageConfig.setXml("mapper");
//        autoGenerator.setPackageInfo(packageConfig);
//
//        // 自定义配置
//        InjectionConfig injectionConfig = new InjectionConfig() {
//            @Override
//            public void initMap() {
//                // to do nothing
//            }
//        };
//        List<FileOutConfig> focList = new ArrayList<>();
//        focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
//            @Override
//            public String outputFile(TableInfo tableInfo) {
//                // 自定义输入文件名称
//                return projectPath + "/resources/mapper/mysql/" + packageConfig.getModuleName()
//                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
//            }
//        });
//        injectionConfig.setFileOutConfigList(focList);
//        autoGenerator.setCfg(injectionConfig);
//        autoGenerator.setTemplate(new TemplateConfig().setXml(null));
//
//        // 策略配置
//        StrategyConfig strategy = new StrategyConfig();
//        strategy.setNaming(NamingStrategy.underline_to_camel);
//        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//        strategy.setEntityLombokModel(true);
//        strategy.setRestControllerStyle(false);
//        strategy.setCapitalMode(true);
//        strategy.setInclude(Scanner("表名"));
//        strategy.setControllerMappingHyphenStyle(true);
//        strategy.setEntityTableFieldAnnotationEnable(true);
////        strategy.setTablePrefix("n_");
//        autoGenerator.setStrategy(strategy);
//        autoGenerator.setTemplateEngine(new VelocityTemplateEngine());
//        autoGenerator.execute();
//    }
//
//
//}
